package org.ccay.i18n.service.impl;

import java.util.Enumeration;
import java.util.ResourceBundle;

import org.ccay.core.util.StringUtil;

/**
 *  国际化辅助工具
 * 
 * @since 2013年7月26日
 */
public final class I18nUtil   {
	
	private static volatile ResourceBundle singleBundle = null;
	/**
	 * Avoid Instances 
	 */
	private I18nUtil(){
	}
	
	/** 
	 * 获取可以返回NULL的Bundle
	 * 
	 * @since 2013年7月26日
	 * @param bundle
	 * @return
	 */
	public static ResourceBundle getNullableResourceBundle(final ResourceBundle bundle){
		
		if(singleBundle != null){
			return singleBundle;
		}
		
		tryCreate(bundle);
		 
		return singleBundle;
	}

	private  synchronized static void tryCreate(final ResourceBundle bundle) {
		if(singleBundle != null){
			return;
		}
		singleBundle = new ResourceBundle() {
			
			@Override
			protected Object handleGetObject(String key) {
				Object obj = bundle.getObject(key);
				
				if(StringUtil.EMPTY.equals(obj)){
					return null;
				}
				return obj;
			}
			
			@Override
			public Enumeration<String> getKeys() { 
				return bundle.getKeys();
			}
		};
	}
	
}
